package com.hooya.fa.eu.biz.dao.repository;

import com.hooya.fa.eu.api.dto.PlInvoiceQueryDTO;
import com.hooya.fa.eu.biz.dao.entity.PlInvoice;

import java.util.List;

/**
 * @Description 1
 * @Author : Zongz
 * @Copyright Copyright (c) 豪雅集团
 * @Create 2023/12/6
 * @Version 1.0.0
 */
public interface PlInvoiceRepository {

    /**
     * 获取需要开票的数据
     *
     * @return list
     */
    List<PlInvoice> getNeedPLInvoicingData();

    /**
     * 批量更新发票状态
     *
     * @param updateInvoiceData 发票数据
     */
    void batchUpdate(List<PlInvoice> updateInvoiceData);

    /**
     * 获取已开票的发票数据
     *
     * @return list
     */
    List<PlInvoice> getFinishedList();

    /**
     * 获取发票数据
     *
     * @return list
     */
    List<PlInvoice> getList();

    /**
     * 获取proforam类型的发票数据
     *
     * @return list
     */
    List<PlInvoice> getErrorInvoiceType();

    /**
     * 根据创建时间获取发票数据
     *
     * @param date 日期
     * @return list
     */
    List<PlInvoice> getByCreateTime(String date);

    /**
     * 获取销售时间范围内已经开过发票且无client id的发票数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<PlInvoice> getPlInvoicedListByDate(String startDate, String endDate);

    /**
     * 根据时间获取修正发票数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<PlInvoice> getCorrectionInvoiceByDate(String startDate, String endDate);

    /**
     * 根据条件获取原始发票
     *
     * @param originInvoiceNumberList 原始发票号
     * @param startDate               开始时间
     * @param endDate                 结束时间
     * @return list
     */
    List<PlInvoice> getOriginInvoiceByCondition(List<String> originInvoiceNumberList, String startDate, String endDate);

    /**
     * 根据条件获取发票数据
     *
     * @return list
     */
    List<PlInvoice> getListByCondition(PlInvoiceQueryDTO query);
}
